package mechanika;

import java.util.Vector;

/**
 *
 * @author Marcin
 */
public class PoleGry {

    private Gracz[] gracze;
    private int[] iloscPionkow;
    private int tura;
    //public static List<Pionek> pionki = new ArrayList<Pionek>(16);
    public static Vector<Pionek> pionki = new Vector<Pionek>(16); // wektor lepszy od listy pod wzgledem usuwania z niego pozycji
    public int[][] pole;

    public PoleGry() {
        tura = 0;
        pole = new int[4][8];
        iloscPionkow = new int[2];

        gracze = new Gracz[2];
        gracze[0] = new Gracz();  // tu jakis textbox wpierdzielic zeby mozna bylo imie podac
        gracze[1] = new Gracz("gracz2");  // tu tez, albo po prostu imie komputerowego gracza

        this.wypelnijPole();
        iloscPionkow[0] = 4;
        iloscPionkow[1] = 4;
    }

    public void wyswietlPole() {
        /*     for(int i=0;i<pionki.size();i++) 
         System.out.println(i+": "+pionki.get(i).getPoleX()+pionki.get(i).getPoleY());   */
        String wyswietl = "";
        wyswietl += "[ TURA: " + tura + "\t<x:y>\n";
        for (int y = 0; y < 8; y++) {
            wyswietl += "( ";
            for (int x = 0; x < 4; x++) {
                wyswietl += "\t<" + x + ":" + (y) + ">  " + pole[x][y] + "";
            }
            wyswietl += "\t),\n";
        }
        wyswietl += "]";
        System.out.println(wyswietl);
    }

    private void wypelnijPole() {
        for (int x = 0; x < 4; x++) {
            for (int y = 0; y < 8; y++) {
                pole[x][y] = -1;
            }
        }

        for (int i = 0; i < pionki.size(); i++) {
            pole[pionki.get(i).getPoleX()][pionki.get(i).getPoleY()] = i;
        }
        this.wyswietlPole();
    }

    public void wykonajRuch(int x, int y, int dx, int dy) {
        pionki.get(pole[x][y]).setPole(dx, dy);
        if (dy == (pionki.get(pole[x][y]).czyBiale() * 7 + 7) / 2) {// dla   1 wychodzi 7
            pionki.get(pole[x][y]).naDame();
            System.out.println("Zmieniono w dame!");
        }// dla  -1 wychodzi 0
        tura++;
        wypelnijPole();
    }

    public Pionek getPionek(int x, int y) {
        int index = pole[x][y];
        if (index >= 0) {
            return pionki.get(pole[x][y]);
        } else {
            return null;
        }
    }

    public void wykonajZbicie(int x, int y, int ex, int ey) {

        int dx, dy, czyBiale = pionki.get(pole[x][y]).czyBiale();
        dx = ex - x;
        dy = ey - y;
        System.out.println(x + ":" + y + "-->" + ex + ":" + ey + ";\tdx:dy " + dx + ":" + dy);
        if (y % 2 == 1) {
            if (dx == 0) {
                wykonajRuch(x, y, x - 1, y + dy * 2);
            } else {
                wykonajRuch(x, y, x + 1, y + dy * 2);
            }
        } else {
            if (dx == 0) {
                wykonajRuch(x, y, x + 1, y + dy * 2);
            } else {
                wykonajRuch(x, y, x - 1, y + dy * 2);
            }
        }
        System.out.println("usuwam pionek #" + pole[ex][ey] + " z pola " + ex + ":" + ey);
        pionki.remove(pole[ex][ey]);
        System.out.println("wykonano zbicie");
        wypelnijPole();
    }
}
/*              // +1+2
 * 
 * 
 * 
 *  dla 1:2 bijacego 1:3
 * dx = 0; dy = 1
 *  laduje na 2:4
 *  +1+2
 * 
 *dla 2:2 bijacego 1:3
 * dx = -1; dy=1;
 *  laduje na 1:4
 * -1+2
 * dla 1:2 bijacego 0:3
 *  dx = -1;dy=1
 * laduje na 0:4
 * -1+2
 * dla 0:2 bijacego 0:3
 *  dx = 0; dy=1
 * laduje na 1:4
 * +1+2
 * 
 * dla 2:2 bijacego 1:3
 *  dx=-1
 * laduje na 1:4
 * -1+2
 */
             //   if(dy==1){